package com.demo.java.OD451_500.OD473;

import java.util.ArrayList;
import java.util.List;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【求幸存数之和(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146354055
 */
public class OdMain {
    // 计算剩余元素的总和
    public static int solve(List<Integer> nums, int jump, int left) {
        int start = 0;  // 起始位置
        int sum = 0;    // 用于存储剩余元素的总和

        // 当列表元素数量大于left时，继续删除元素
        while (nums.size() != left) {
            // 计算跳跃后的元素位置
            start = (start + jump + 1) % nums.size();
            // 删除该位置的元素
            nums.remove(start);
            // 更新位置
            start--;
        }

        // 计算剩余元素的总和
        for (int x : nums) {
            sum += x;
        }

        // 返回总和
        return sum;
    }

    public static void main(String[] args) {
        // 初始化列表
        List<Integer> nums = new ArrayList<>();
        nums.add(1);
        nums.add(2);
        nums.add(3);
        nums.add(4);
        nums.add(5);
        nums.add(6);
        nums.add(7);
        nums.add(8);
        nums.add(9);

        // 调用solve方法，计算结果
        int ret = solve(nums, 4, 3);

        // 输出结果
        System.out.println(ret); // 输出13
    }
}